﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Crosland.Automotriz.Logic.Linq;
using DevExpress.Web.ASPxEditors;
using Crosland.Automotriz.Entidad;
using System.Net.Mail;
using Crosland.Automotriz.Seguridad.Entity;
using Crosland.Automotriz.Seguridad.Business;

namespace Crosland.Automotriz.Web.Minorista
{
    public partial class wFrmSeguroVehicularRespuesta : System.Web.UI.Page
    {
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        const string script = "MostrarAlerta();";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                ListarOficinaVentas();
                ListarAnio();
                ListarModelos();
                ListarEstados();
                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
            }
            ListarFacturas();
        }

        void ListarModelos()
        {
            int ID_OFI_VTA = 0;
            if (cboOficinaVentas.SelectedIndex == 0) 
            {
                ID_OFI_VTA = 0;
            }
            else
            {
                ID_OFI_VTA = int.Parse(cboOficinaVentas.Value.ToString());
            }

            clsVW_ModeloBL blModelo = new clsVW_ModeloBL();
            List<MapTD_MODELO> mod = blModelo.ListarModelosXOficina(ID_OFI_VTA);

            cboModelo.DataSource = mod;
            cboModelo.TextField = "des_modelo";
            cboModelo.ValueField = "des_modelo";
            cboModelo.DataBind();
            ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
            cboModelo.Items.Insert(0, l);
            cboModelo.SelectedIndex = 0;
        }

        void ListarOficinaVentas()
        {
            clsTd_Oficina_VentaLogic bl = new clsTd_Oficina_VentaLogic();
            cboOficinaVentas.DataSource = bl.lista();
            cboOficinaVentas.TextField = "DES_OFI_VTA";
            cboOficinaVentas.ValueField = "ID_OFI_VTA";
            cboOficinaVentas.DataBind();
            ListEditItem l = new ListEditItem() { Text = "Todos", Value = "" };
            cboOficinaVentas.Items.Insert(0, l);
            cboOficinaVentas.SelectedIndex = 0;
        }

        void ListarAnio()
        {
            clsTH_VentaBL bl = new clsTH_VentaBL();
            cboAnio.DataSource = bl.AniosFactura();
            cboAnio.TextField = "anio";
            cboAnio.ValueField = "anio";
            cboAnio.DataBind();
            cboAnio.SelectedIndex = 0;
        }

        void ListarEstados()
        {
            clsT_Mae_Tabla_General_DetBL bl = new clsT_Mae_Tabla_General_DetBL();
            cboEstado.DataSource = bl.Listar("T_EST_SEG_VEH", 11);
            cboEstado.TextField = "DES_LARGA";
            cboEstado.ValueField = "ID_GENERAL_DET";
            cboEstado.DataBind();
            cboEstado.Value = "41";
        }

        void ListarFacturas()
        {
            clsTH_VentaBL bl = new clsTH_VentaBL();
            string oficina = "";
            if (cboOficinaVentas.SelectedIndex == 0)
            {
                oficina = "";
            }
            else 
            {
                oficina = cboOficinaVentas.Text;
            }
            
            int anio = int.Parse(cboAnio.Text);
            int mes = int.Parse(cboMes.Value.ToString());
            string num_factura = txtFactura.Text.Trim();
            string num_folio = txtFolio.Text.Trim();
            string cliente = txtCliente.Text.Trim();
            int ID_ESTADO = int.Parse(cboEstado.Value.ToString());

            string modelo = "";
            if (cboModelo.SelectedIndex == 0)
            {
                modelo = "";
            }
            else
            {
                modelo = cboModelo.Text;
            }

            gvFacturas.DataSource = bl.ListarVentas(oficina, anio, mes, num_factura, num_folio, cliente, modelo, ID_ESTADO);
            gvFacturas.DataBind();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmDefault.aspx?id=" + idNegocio);
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            ListarFacturas();
        }

        protected void btnVerDatos_Click(object sender, EventArgs e)
        {
            int indice = gvFacturas.FocusedRowIndex;
            if (indice >= 0)
            {
                string ID_VENTA_VEHICULO_SEGURO = gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString();
                Response.Redirect("wFrmSeguroVehicularActualizar.aspx?idvvs=" + ID_VENTA_VEHICULO_SEGURO + "&id=" + idNegocio + "&lec=1");
            }
            else
            {
                lblMensaje.Text = "Debe seleccionar un comprobante";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void btnEnviarSolicitud_Click(object sender, EventArgs e)
        {
            int indice = gvFacturas.FocusedRowIndex;
            if (indice >= 0)
            {
                if (cboEstado.Text.Trim() == "EN PROCESO" || cboEstado.Text.Trim() == "APROBADO" || cboEstado.Text.Trim() == "RECHAZADO")
                {
                    lblMensaje.Text = "Solo puede seleccionar los comprobates PENDIENTE DE APROBAR";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
                else
                {
                    int ID_VENTA_VEHICULO_SEGURO = int.Parse(gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString());

                    clsTH_Venta_Vehiculo_SeguroBL bl = new clsTH_Venta_Vehiculo_SeguroBL();
                    TH_VENTA_VEHICULO_SEGURO evvs = new TH_VENTA_VEHICULO_SEGURO();
                    evvs = bl.Seleccionar(ID_VENTA_VEHICULO_SEGURO);
                    string ID_USUARIO_SOLICITUD = evvs.ID_USUARIO_SOLICITUD;

                    List<T_SEG_USUARIO> listaEmailUsuario = new List<T_SEG_USUARIO>();
                    clsUsuarioLogic usubl = new clsUsuarioLogic();
                    listaEmailUsuario = usubl.TraerEmail(ID_USUARIO_SOLICITUD);
                    lblEmailUsuario.Text = listaEmailUsuario[0].DES_EMAIL;

                    pcSolicitud.ShowOnPageLoad = true;
                }
            }
            else
            {
                lblMensaje.Text = "Debe seleccionar un comprobante";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        void EnvioCorreo(string resultado)
        {
            try
            {
                int indice = gvFacturas.FocusedRowIndex;
                int ID_VENTA_VEHICULO_SEGURO = int.Parse(gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString());

                clsTH_Venta_Vehiculo_SeguroBL bl = new clsTH_Venta_Vehiculo_SeguroBL();
                TH_VENTA_VEHICULO_SEGURO ev = new TH_VENTA_VEHICULO_SEGURO();
                ev = bl.Seleccionar(ID_VENTA_VEHICULO_SEGURO);
                int ID_ORG_VTA = (int)ev.ID_ORG_VTA;
                int NRO_FACTURA = (int)ev.NRO_FACTURA;
                int NRO_POSICION = (int)ev.NRO_POSICION;

                List<T_SEG_USUARIO> listaUsuario = new List<T_SEG_USUARIO>();
                clsUsuarioLogic usubl = new clsUsuarioLogic();
                listaUsuario = usubl.listarUser(Session["User"].ToString());
                string NombreUsuarioResponde = listaUsuario[0].DES_NOMBRE + ", " + listaUsuario[0].DES_APELLIDOS;

                clsTH_VentaBL blv = new clsTH_VentaBL();
                MapVentaDuaTitulo evm = new MapVentaDuaTitulo();
                evm = blv.VentasSeleccionar(ID_ORG_VTA, NRO_FACTURA, NRO_POSICION);

                string body = "";
                body = body + "<table style='font-family:Arial; font-size:12px;'>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Cliente:</td>";
                body = body + "<td>" + evm.NOM_COMERCIAL + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>N° Folio:</td>";
                body = body + "<td>" + evm.NRO_FOLIO + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>N° Factura SAP:</td>";
                body = body + "<td>" + ev.NRO_FACTURA + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Fecha Emisión Factura:</td>";
                body = body + "<td>" + evm.FEC_FACTURA.Value.ToShortDateString() + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>N° Ref. Embarque:</td>";
                body = body + "<td>" + evm.REF_EMBARQUE + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Modelo:</td>";
                body = body + "<td>" + evm.DES_MODELO + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>N° Póliza:</td>";
                body = body + "<td>" + evm.NRO_POLIZA + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Fecha Póliza:</td>";
                body = body + "<td>" + evm.FEC_POLIZA.Value.ToShortDateString() + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Oficina de Venta:</td>";
                body = body + "<td>" + evm.DES_OFI_VTA + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Resuelto por:</td>";
                body = body + "<td>" + NombreUsuarioResponde + "</td>";
                body = body + "</tr>";

                body = body + "<tr>";
                body = body + "<td style='font-weight:bold'>Respuesta:</td>";
                body = body + "<td>" + resultado + "</td>";
                body = body + "</tr>";

                body = body + "</table>";

                body = body + "<br /><br />";
                body = body + "<strong>OBSERVACIONES:</strong> " + txtObservacion.Text.ToUpper().Trim();
                body = body + "<br /><br />";
                body = body + "<a href='http://automotriz.crosland.com.pe'>Ir a la Intranet</a>";

                MailMessage mail = new MailMessage();

                mail.From = new MailAddress(ConfigurationManager.AppSettings["MailFrom"], ConfigurationManager.AppSettings["UserNameSMTP"]);
                mail.Subject = ("Respuesta de Seguro Vehicular - " + evm.DES_OFI_VTA + " - " + evm.NOM_COMERCIAL);
                mail.Body = body;
                mail.IsBodyHtml = true;
                mail.To.Add(lblEmailUsuario.Text);
                if (txtCC.Text.Trim() != "")
                {
                    mail.CC.Add(txtCC.Text.Trim());
                }
                SmtpClient s = new SmtpClient();
                s.Host = ConfigurationManager.AppSettings["EmailServer"];
                s.Port = 25;
                s.EnableSsl = false;
                s.UseDefaultCredentials = false;
                s.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["MailFrom"], ConfigurationManager.AppSettings["PasswordSMTP"]);
                s.Send(mail);

            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }

        }

        protected void btnGrabarSolicitudAprobado_Click(object sender, EventArgs e)
        {
            try
            {
                int indice = gvFacturas.FocusedRowIndex;
                if (indice >= 0)
                {
                    int resultado = 0;
                    int ID_VENTA_VEHICULO_SEGURO = int.Parse(gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString());

                    clsTH_Venta_Vehiculo_SeguroBL bl = new clsTH_Venta_Vehiculo_SeguroBL();
                    resultado = bl.ActualizarEnviarRespuesta(ID_VENTA_VEHICULO_SEGURO, Session["User"].ToString(), txtObservacion.Text, 42);

                    EnvioCorreo("APROBADO");

                    ListarFacturas();
                    pcSolicitud.ShowOnPageLoad = false;

                    lblMensaje.Text = "Respuesta enviada satisfactoriamente.";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void btnGrabarSolicitudRechazado_Click(object sender, EventArgs e)
        {
            try
            {
                int indice = gvFacturas.FocusedRowIndex;
                if (indice >= 0)
                {
                    int resultado = 0;
                    int ID_VENTA_VEHICULO_SEGURO = int.Parse(gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString());

                    clsTH_Venta_Vehiculo_SeguroBL bl = new clsTH_Venta_Vehiculo_SeguroBL();
                    resultado = bl.ActualizarEnviarRespuesta(ID_VENTA_VEHICULO_SEGURO, Session["User"].ToString(), txtObservacion.Text, 43);

                    EnvioCorreo("RECHAZADO");

                    ListarFacturas();
                    pcSolicitud.ShowOnPageLoad = false;

                    lblMensaje.Text = "Respuesta enviada satisfactoriamente.";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void btnImprimir_Click(object sender, EventArgs e)
        {
            int indice = gvFacturas.FocusedRowIndex;
            if (indice >= 0)
            {
                string ID_VENTA_VEHICULO_SEGURO = gvFacturas.GetRowValues(indice, "ID_VENTA_VEHICULO_SEGURO").ToString();
                Response.Redirect("~/Reportes/wFrmReporte.aspx?url=/SAP_CRM/rsSeguroVehicular&id=3&p1=" + ID_VENTA_VEHICULO_SEGURO);
            }
        }

        protected void cboOficinaVentas_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarModelos();
        }
    }
}